// build.rs
use serde_json::Value;
use std::fs::{self, File};
use std::io::Write;

fn main() {
    //set_ffmpeg();
    // 读取 tauri.conf.json 文件
    let conf = fs::read_to_string("tauri.conf.json").expect("无法读取 tauri.conf.json");

    // 解析 JSON
    let json: Value = serde_json::from_str(&conf).expect("无法解析 JSON");

    // 获取 version 字段
    let version = json["version"].as_str().expect("找不到 version 字段");

    // 生成 version.rs 文件
    let mut file = File::create("src/version.rs").expect("无法创建 version.rs");
    file.write_all(format!(r#"pub const VERSION: &str = "{}";"#, version).as_bytes())
        .expect("无法写入 version.rs");
    tauri_build::build()
}

fn _set_ffmpeg() {
    use std::env;
    use std::fs;
    use std::path::PathBuf;

    // ffmpeg.lib 所在的路径

    let source_dll =
        PathBuf::from(r"D:\work20220906\qt\work\ffmpeg_vs2019\msvc\bin\x64\ffmpegd.dll");

    // 获取当前包的输出目录（可执行文件所在目录）
    let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap());

    // 向上两级目录，到达debug/release目录
    let bin_dir = out_dir
        .parent()
        .unwrap()
        .parent()
        .unwrap()
        .parent()
        .unwrap();

    // 构建目标路径
    let target_dll = bin_dir.join("ffmpeg.dll");

    // println!("cargo:warning====================>{:?}",target_dll);

    // 复制DLL文件
    match fs::copy(&source_dll, &target_dll) {
        Ok(_) => {
            println!(
                "cargo:warning=成功复制 ffmpeg.dll 到 {}",
                target_dll.display()
            );
        }
        Err(e) => {
            println!("cargo:warning=无法复制 ffmpeg.dll: {}", e);
        }
    }

    println!(
        "cargo:rustc-link-search=native=D:/work20220906/qt/work/ffmpeg_vs2019/source/FFmpeg/SMP/obj/Debug/x64/ffmpeg/"
    );
    println!("cargo:rustc-link-lib=static=ffmpegd"); // 或 dynamic=ffmpeg，如果你生成的是 import lib
}
